package com.cskaoyan.javase.file.api3.get4.high;

/**
 * @description: File的自定义获取功能
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;

/**
 * 我现在只想获取目录下的zip文件
 * 只想获取图片,只想获取文件夹,只想获取文件.... .avi .mp4
 * 就是有限制条件的去获取目录下的文件
 *
 * //获取这个文件夹下，满足filter过滤器的条件的文件
 * File[] listFiles(FileFilter filter)
 * 它是listFiles()的一个重载方法,它就是在listFiles()基础上加了一个过滤器
 *
 * FileFilter是一个接口
 * 这个接口中只有一个方法
 *   boolean accept(File pathname); 这个方法是用来判断传入的File对象是否符合要求，如果符合要求就返回true
 *   否则返回false 这个方法就是一个过滤器方法
 *
 *
 *
 */
public class Demo2 {
    public static void main(String[] args) {
        File f = new File("E:\\1");
        File[] files = f.listFiles(new MyFileFilter());
        System.out.println(Arrays.toString(files));

        //以上是常规操作
        //接下来 我用匿名内部类来做接口的实现类
        File[] files2 = f.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                //需求是获取该目录下的所有文件夹
                //判断 只要该对象是一个文件夹对象 返回true
                if (pathname.isDirectory()) {
                    return true;
                }
                return false;
            }
        });
        System.out.println(Arrays.toString(files2));
    }
}
class MyFileFilter implements FileFilter{
    @Override
    public boolean accept(File pathname) {
        //在这里写过滤器条件
        //需求是:获取目录下的所有zip文件
        //判断是否是文件
        if (!pathname.isFile()){
            //它不是文件
            return false;
        }
        //代码走到这里都是文件了
        //获取它的文件名
        String fileName = pathname.getName();
       /* boolean b = fileName.endsWith(".zip");
        return b;*/
       //如果是以.zip结尾直接返回true  否者false
       return fileName.endsWith(".zip");
    }
}
